'use strict';

// Clientes
angular.module('simon.controllers').controller('VendaCtrl', ['$scope', '$rootScope', 'VendaFactory', 'FormPagtoFactory', 'FuncionarioFactory', 'CondPagtoValorFactory', 'ModalFactory',
  function ($scope, $rootScope, VendaFactory, FormPagtoFactory, FuncionarioFactory, CondPagtoValorFactory, ModalFactory) {
	angular.element(document).ready(function () {
        if ($rootScope.usuarioLogado) {
        	$(".moeda").maskMoney({decimal:',',thousands:'.'});
            initVenda();
        }
	});
	
	function initProduto() {
    	$scope.$broadcast("RESET_AUTO");
    	$scope.produtoTmp = null; $scope.quantidade = 1; $scope.preco = 0.00; $scope.desconto = 0;
    }
    
    function initVenda() {
    	$scope.venda = {usuario: $rootScope.usuarioLogado, 
    			loja: $rootScope.usuarioLogado.funcionario.loja, 
        		funcionario: '', cliente: '', formaPagamento: '', 
        		notaFiscal: '', parcelas: 1, valorTotal: 0, itemVendas: []};
    	$scope.clienteTmp = null;
    	initProduto();
    	if ($scope.vendaForm) {
    		$scope.vendaForm.$setPristine();
    	}
    }
	
    $scope.setaPreco = function () {
    	if ($scope.preco == 0.00) {
    		$scope.preco = $scope.produtoTmp.originalObject.preco2;
    	}
    };
    
    $scope.addProd = function () {
    	$scope.preco = $('#preco').maskMoney('unmasked')[0];
    	var precoPraticado = $scope.preco - ($scope.preco * ($scope.desconto / 100));
    	$scope.venda.valorTotal += (precoPraticado * $scope.quantidade);
    	$scope.venda.itemVendas.push({
    		produto: $scope.produtoTmp.originalObject, 
    		quantidade: $scope.quantidade, 
    		precoVenda: $scope.preco, 
    		precoPraticado: precoPraticado,
    		desconto: $scope.desconto});
    	initProduto();
    };
    
    $scope.delProd = function (item, idx) {
    	$scope.venda.valorTotal -= (item.precoPraticado * item.quantidade);
    	$scope.venda.itemVendas.splice(idx, 1);
    };
    
    $scope.addVenda = function() {
    	if ($scope.venda.parcelas > 1) {
    		CondPagtoValorFactory.query($scope.venda.valorTotal, $scope.venda.formaPagamento.id, $scope.venda.parcelas)
    			.success(function(data) {
    				if (data == "true") {
    					registrarVenda();
    				} else {
    					ModalFactory.notify("Aviso", "Quantidade de parcelas n&atilde;o permitida para esta forma de pagamento e\\ou valor total!");
    				}
    			})
    			.error(function() {
    				ModalFactory.error("Erro", "Falha ao acessar o servidor!");
    			});
    	} else {
    		registrarVenda();
    	}
    };
    
    function registrarVenda() {
    	$scope.venda.cliente = $scope.clienteTmp.originalObject;
    	$scope.venda = VendaFactory.create($scope.venda, 
    		function (success) { 
    			ModalFactory.notify("Aviso", "Venda [" + $scope.venda.id + "] registrada com sucesso!");
    			initVenda();
    		},
    		function (error) { ModalFactory.error("Erro", "Falha ao inserir o registro!"); }
    	);
    }
    
    $scope.produtosUrl = "http://localhost:8080/simon-api/produto/query?param=";
    $scope.clientesUrl = "http://localhost:8080/simon-api/cliente/query?param=";
    
    $scope.formsPagto = FormPagtoFactory.queryAtivos();
    $scope.funcionarios = FuncionarioFactory.query();
  }]);
